package cn.coco.jf.fw.admin.sys.controller.ptn;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import com.jfinal.plugin.activerecord.Page;

import cn.coco.jf.fw.core.db.SysPtnVerbTbl;
import cn.coco.jf.fw.admin.cache.SysCacheManager;
import cn.coco.jf.fw.admin.config.consts.SysConsts;
import cn.coco.jf.fw.admin.controller.FwBaseController;
import cn.coco.jf.fw.admin.sys.dao.ptn.PtnDao;
import cn.coco.jf.fw.admin.sys.model.ptn.PtnPageModel;
import cn.exlu.coco.core.utils.DateUtil;
import cn.exlu.coco.core.utils.StringUtil;

/**
 * 基础数据
 * 基础数据管理
 * 
 * @version 1.0.0
 * @author Mark
 * @see 参照者
 * @since 1.0.1.1
 * @date 2019年02月01日
 */
public class PtnController extends FwBaseController {
    private static Logger _LOG = Logger.getLogger(PtnController.class);

    /**
     * 进入页面
     */
    public void index(){
        this.render("ptnIndex.html");

    }
    
    
    /**
     * 用户一览
     */
    public void doPage(){
        int pageNumber = this.getParaPageNumber();
        int pageSize = this.getParaPageSize();
        String ptnType = this.getPara("ptnType");
        
        String usage = SysConsts.USAGE_DIV_BUS;
        if(SysConsts.SUPER_ADMIN.equals(this.getLoginId())) {
        	// 超级管理员以为的场合
        	usage = null;
        }

        Page<PtnPageModel> page = PtnDao.page(pageNumber, pageSize, ptnType, usage);
        
        pageJson(page);
    }
    
    /**
     * 新增页面
     */
    public void editItem(){
        this.setAttr("_oper", "upd");
        
        this.render("ptnItemEdit.html");

    }
    
    public void doItemPage() {
        String ptnType = this.getPara("ptnType");
        
        List<SysPtnVerbTbl> list = PtnDao.querySysPtnVerbTblByPtnType(ptnType);
        
        setAttr("code", 1);
        setAttr("msg", "OK");
        setAttr("rows", list);
        setAttr("total", list.size());
        this.renderJson();
    }

    /**
     * 新增处理
     */
    public void doTxEditAddItem(){
        SysPtnVerbTbl m = this.getBean(SysPtnVerbTbl.class, "", true);
        
        if(StringUtil.isNullOrEmpty(m.getPtnType())) {
            this.errJson("请选择类型");
            return;
        }
        
        if(StringUtil.isNullOrEmpty(m.getPtnTypeName())) {
            this.errJson("请选择类型名称");
            return;
        }
        
        if(StringUtil.isNullOrEmpty(m.getPtnCode())) {
            this.errJson("请输入CODE");
            return;
        }
        
        if(StringUtil.isNullOrEmpty(m.getPtnName())) {
            this.errJson("请选择名称");
            return;
        }
        
        if(m.getDataSort() == null) {
            m.setDataSort(1);
        }
        
        if(StringUtil.isNullOrEmpty(m.getUsageDiv())) {
            m.setUsageDiv(SysConsts.USAGE_DIV_BUS);
        }

        // =======验证======
        // ptnCode重复性
        SysPtnVerbTbl sysPtnVerbTbl_entity = PtnDao.findSysPtnVerbTblByPtnTypeAndPtnCode(m.getPtnType(), m.getPtnCode());
        
        if(sysPtnVerbTbl_entity != null) {
            this.errJson("Code重复");
            return;
        }

        // ====== 设置数据 ======
        Date curDate = DateUtil.currentBusDate();

        m.setDataStatus(SysConsts.DATA_STATUS_NORMAL);
        m.setCreateDateTime(curDate);
        m.setCreateUser(this.getLoginId());
        m.setUpdateDateTime(curDate);
        m.setUpdateUser(this.getLoginId());

        m.save();
        
        // 刷新缓存
        SysCacheManager.removeDictList(m.getPtnType());

        successJson(null);
    }
    
    /**
     * 更新处理
     */
    public void doTxEditUpdItem(){
        SysPtnVerbTbl m = this.getBean(SysPtnVerbTbl.class, "", true);
        
        
        if(m.getPtnId() == null) {
            this.errJson("请选择一条记录");
            return;
        }
        
        if(StringUtil.isNullOrEmpty(m.getPtnName())) {
            this.errJson("请选择名称");
            return;
        }
        
        SysPtnVerbTbl entity = SysPtnVerbTbl.dao.findById(m.getPtnId());
        
        if(entity == null) {
        	this.errJson("数据不存在");
            return;
        }

        // ====== 设置数据 ======
        Date curDate = DateUtil.currentBusDate();

        entity.setPtnName(m.getPtnName());
        entity.setUpdateDateTime(curDate);
        entity.setUpdateUser(this.getLoginId());

        entity.update();
        
        // 刷新缓存
        SysCacheManager.removeDictList(entity.getPtnType());

        successJson(null);
    }

    public void select(){
        Integer id = this.getParaToInt("id");

        if(id == null){
            this.errJson("请选择一条记录!");
            return;
        }

        SysPtnVerbTbl entity = SysPtnVerbTbl.dao.findById(id);

        if(entity == null){
            this.errJson("记录不存在!");
            return;
        }

        successJson(entity);

    }

    public void refreshPtnType() {
        String ptnType = this.getPara("ptnType");

        SysCacheManager.removeDictList(ptnType);
    }

}
